package main

import (
	"fmt"
	"math"
	"strconv"
	"strings"
	"time"
)

//只有当某个函数需要被外部包调用的时候才使用大写字母开头，并遵循 Pascal 命名法；否则就遵循骆驼命名法，即
//第一个单词的首字母小写，其余单词的首字母大写
const Pis = 3.14159
const b string = "abc" //显式定义go
const v = "12"         //隐式定义go
//使用 type 关键字可以定义你自己的类型，你可能想要定义一个结构体(第 10 章)，但是也可以定义一个已经存在

//枚举定义
const beef, two, c = "eat", 2, "veg"
const Monday, Tuesday, Wednesday, Thursday, Friday, Saturday = 1, 2, 3, 4, 5, 6

//const (
//Monday, Tuesday, Wednesday = 1, 2, 3
//Thursday, Friday, Saturday = 4, 5, 6
//)

//定义枚举
//const (
//a = iota
//b = iota
//c = iota
// )
var Pi float64

//inti 优先级最高
func init() {
	Pi = 4 * math.Atan(1) // init() function computes Pi
}

//strings.HasPrefix(s, prefix string) bool String是否有前缀
//strings.Contains(s, substr string) bool是否有包含关系
// strings.Index(s, str string) int -1表示没有该索引
//strings.LastIndex(s)
//strings.Count(s, str string) 统计有多少次出现
//

func main() {
	fmt.Print("helloReadyforGo")
	fmt.Printf("Καλημέρα κόσμε; or こんにちは 世界\n")
	type IZ int
	var a IZ = 6
	fmt.Print(a)
	str := "The quick brown fox jumps over the lazy dog"
	sl := strings.Fields(str)
	fmt.Printf("Splitted in slice: %v\n", sl)
	//切片
	for _, val := range sl {
		fmt.Printf("%s - ", val)
	}
	fmt.Println(strconv.Itoa(200)) //返回i所对应的十进制日程
	//strconv.Atoi(s string) (i int, err error) 将字符串转换成十进制
	t := time.Now()
	fmt.Println("%s--------------%s", t.Day(), t.Month())
	//var intP *int
	var intP *int //定义指针
	var variables int = 20
	intP = &variables
	fmt.Println(intP)
	fmt.Print(*(intP))

}
